package cn.tedu.oop;
/*本类用作多态的回顾*/
public class TestDemo {
    public static void main(String[] args) {
        Animal a=new Animal();
        Cat c=new Cat();
        Dog d=new Dog();
        a.eat();//吃啥都行,调用的是父类自己的方法
        c.eat();//小鱼干,调用的是子类重写后的方法
        d.eat();//肉骨头,调用的是子类重写的方法

        /*父类不能调用子类的特有功能*/
        //.jump();
        //a.run();
        c.jump();
        d.run();

        //创建多态对象进行测试
        /*口诀1:父类引用指向子类对象
        * 口诀2:编译看左边,运行看右边*/
        Animal a2=new Cat();
        Animal a3=new Dog();
        a2.eat();//小鱼干
        a3.eat();//肉骨头
        //a2.jump();多态对象把自己看做是父类类型,父类没有定义这个功能
        //a3,run();
    }
}


class Animal{
    public void eat(){
        System.out.println("吃啥都行!");
    }
}
class Cat extends Animal{
    @Override
    public void eat(){
        System.out.println("小猫爱吃小鱼干~");
    }
    public void jump(){
        System.out.println("小猫跳得老高了");
    }
}
class Dog extends Animal{
    @Override
    public void eat(){
        System.out.println("小狗爱吃肉骨头~");
    }
    public void run(){
        System.out.println("小狗跑得老快了");
    }
}